package dem_01;

import java.io.BufferedWriter;
import java.io.FileNotFoundException; //导包;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.lang.StringBuffer;
import java.util.Scanner;

public class pro {
	public static void main(String[] args) {
		test t = new test();
		t.change(); // 添加符号;
		t.print(); // 输出改变后的内容;
		t.www(); // 把改变后的内容写入.txt文件;
		t.seekC();
	}
}

class test {
	Scanner in = new Scanner(System.in);
	StringBuffer sb = new StringBuffer(); // StringBuffer对象sb;

	public void change() {
		String s = in.next();// 输入字符串;
		sb.append(s); // 将s里的内容添加到sb里去;
		int t = -1; // 下文通过t*=-1来判断是add',',还是add'。';因为这两个是相间隔add的;
		int cnt = 0; // 计数：add一个',',或者'。'和'\n\,就cnt++或cnt+=2;表示当前加了多少字符;
		int len = sb.length(); // 得到sb的大小len;
		for (int i = 0; i < len; i++) { // 循环len次;
			if (i % 7 == 0 && i != 0) { // 每七次添加相应符号;
				if (cnt + i >= len) { // 因为是在cnt+i上位置添加的，先判断是否超出最大有效下标;
					break;
				}
				t *= -1; // 判断是添加逗号还是句号和换行符;
				if (t == 1) { // 奇数时，即t==1时，添加逗号;
					sb.insert(i + cnt, ','); // 在i+cnt的位置添加，以为原本是要在i上添加的，但如果已经添加cnt个符号，原来
					cnt++;// 以add一个，cnt++; //位置上就要后移cnt个;
					len++;// 当然。它原本的长度也要加1；
				}
				if (t == -1) { // 即t为偶数时，添加句号和换行符，因为输出时句号后面就要换行;
					sb.insert(i + cnt, '。'); // 同上；
					sb.insert(i + 1 + cnt, '\n');// 在句号后面加换行符;
					cnt += 2; // 因为加了两个字符,所以自加2;
					len += 2;// len也一样;
				}
			}
		}
		s = sb.substring(0);// 把sb里内容全部截取到s中，目的是为了使用indexOf函数，得到想要字符的下标值;
		int index = s.indexOf('<'); // 得到字符'<'的下标值;
		sb.replace(index, len, "......"); // 将字符'<'及后面的字符串替换为'......';
	}

	public void print() {
		System.out.println(sb); // 输出sb里的内容;
	}

	public void www() {
		try {
			PrintWriter out = new PrintWriter( // 建立PrintWriter对象，进行文本操作;
					new BufferedWriter( // 缓冲;
							new OutputStreamWriter( // 将文件存在D盘下目录下;
									new FileOutputStream("D:\\java_experiment5\\poem.txt"))));
			out.println(sb); // 把sb里的内容写入文件poem.txt中;
			out.close(); // 关闭文件;
		} catch (FileNotFoundException e) { // 捕捉文件找不到的异常;
			e.printStackTrace();
		}
	}

	public void seekC() {
		String sr = sb.substring(0); //sr保存初始的字符串;
		while (true) {
			System.out.println("是否要查找内容：1进入，其他数字退出");
			int sf = in.nextInt();
			if (sf != 1)	//是否要查找字符串
				break;
			int count = 0;	//字符出现的次数;
			System.out.println("请输入要查找的内容:");
			String ss = in.next();	//要查找的字符串;
			while (true) {
				int index = sb.indexOf(ss);	//得到要查找字符串的第一个元素的下标
				int length = sb.length();  //得到当前字符串的长度;
				if (index != -1) {	//如果index==-1,那么表示就没有，就不用进行查找后几次出现的操作;
					sb.append(sb.substring(index + ss.length())); //向原本字符串里增加查找的字符串后面的子字符串;
					sb.delete(0, length);	//删掉原本的字符串，得到的是增加后的字符串;
					count++;	//出现次数加1;
				} else {
					break;	//如果没有，就跳出循环;
				}
			}
			System.out.println(ss + "出现的次数为：" + count);
			sb.delete(0, sb.length()); //删除剩余的字符串内容;
			sb.append(sr);	//重新写入原本的字符串，进行下一次的查找;
		}
	}
}
